#include <stdio.h>
#include <stdlib.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <unistd.h>
#include <errno.h>
#include <fcntl.h>
#include <string.h>

#define MAX_DATA_SIZE 5
#define FIFO "/tmp/my_fifo"
int main(){

	char buf_r[100];
	int fd;
	int nread;

	if((mkfifo(FIFO,O_CREAT|O_EXCL)<0)&&(errno!=EEXIST))   
		printf("cannot create FIFOserver\n");
	chmod(FIFO,S_IRUSR|S_IWUSR|S_IXUSR);
	printf("Preparing for reading bytes...\n");

	memset(buf_r,0,sizeof(buf_r));
	printf("buf_r is %s \n",buf_r);
	
	fd=open(FIFO,O_RDONLY|O_NONBLOCK,0); 
	if(fd==-1){
		perror("open");
		exit(1);
	}
	printf("FIFO file is opened...\n");
	
	int i=0;
	while(1){

		memset(buf_r,0,sizeof(buf_r));
		if((nread=read(fd,buf_r,100))==-1){
			if(errno==EAGAIN)
				printf("no data yet\n");
		}
		i++;
		printf("read %d times from FIFO %s \n",i,buf_r);
		sleep(1);
	}
	
	pause();
	unlink(FIFO);

}
